home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qbsnip.zip / SCROLBOX.BAS < prev    next >
BASIC Source File  |  1997-02-17  |  3KB  |  76 lines

  1. 'SCROLBOX.BAS Scroll Box Demonstration
  2. 'by Kurt Kuzba
  3. 'Public Domain - No warranties are expressed or implied
  4.  
  5. 'This program demonstrates the use of a configurable scroll box with
  6. 'hi-lite marker and line number display.
  7.  
  8. DECLARE FUNCTION ScrollBox% (lim%, high%, wide%, LIN%, COL%)
  9. '$DYNAMIC$
  10.  
  11. TYPE textline: l AS STRING * 80: END TYPE
  12. DIM SHARED txt(800) AS textline
  13.  
  14. OPEN "c:\autoexec.bat" FOR INPUT AS #1
  15.   t% = 0
  16.   WHILE ((t% < 800) AND (NOT EOF(1)))
  17.     LINE INPUT #1, txt(t%).l: t% = t% + 1
  18.   WEND
  19. CLOSE 1
  20.  
  21. 'ScrollBox (# of items, height of box, width of box, YPos, XPos
  22. 'selected% = ScrollBox%(t%, 22, 76, 1, 1)
  23. selected% = ScrollBox%(t%, 10, 40, 5, 5)
  24.  
  25. COLOR 2, 0: CLS : PRINT "You hit ENTER on array item"; selected%
  26. PRINT "The text on that line was:"
  27. PRINT txt(selected%).l
  28. END
  29.  
  30. REM $STATIC
  31. FUNCTION ScrollBox% (lim%, high%, wide%, LIN%, COL%)
  32.    COLOR 7, 0: CLS : sel% = 0: top% = 0: ex% = lim%
  33.    COLOR 9, 1: LOCATE 1, 1, 0: s$ = STRING$(wide%, " ")
  34.    FOR t% = 0 TO high% + 1
  35.       LOCATE LIN% + t%, COL%
  36.       PRINT STRING$(wide% + 4, CHR$(177));
  37.    NEXT
  38.    LIN% = LIN% + 1: COL% = COL% + 2
  39.    WHILE lim% = ex%
  40.       COLOR 9, 1: LOCATE LIN% - 1, COL%
  41.       PRINT MID$(STR$(sel% + 1), 2) + STRING$(3, CHR$(177))
  42.       FOR t% = 0 TO (high% - 1)
  43.          LOCATE LIN% + t%, COL%: COLOR 1, 3
  44.          IF t% + top% = sel% THEN COLOR 0, 7
  45.          PRINT LEFT$(txt(top% + t%).l + s$, wide%)
  46.       NEXT: p% = 0: p$ = " HPIQGO" + CHR$(13)
  47.       WHILE p% < 2: p% = INSTR(p$, RIGHT$(INKEY$, 1)): WEND
  48.       SELECT CASE p%
  49.          CASE IS = 2   'CURSOR UP
  50.             IF sel% > 0 THEN sel% = sel% - 1
  51.             IF sel% < top% THEN top% = sel%
  52.          CASE IS = 3   'CURSOR DOWN
  53.             IF sel% < (lim% - 1) THEN sel% = sel% + 1
  54.             IF sel% > (top% + (high% - 2)) THEN top% = sel% - high% + 1
  55.          CASE IS = 4   'PAGE UP
  56.             top% = top% - high%: sel% = sel% - high%
  57.             IF top% < 0 THEN top% = 0
  58.             IF sel% < 0 THEN sel% = 0
  59.          CASE IS = 5   'PAGE DOWN
  60.             top% = top% + high%: sel% = sel% + high%
  61.             IF top% >= lim% - high% THEN top% = lim% - high%
  62.             IF top% < 0 THEN top% = 0
  63.             IF sel% >= lim% THEN sel% = lim% - 1
  64.          CASE IS = 6   'HOME
  65.             top% = 0: sel% = 0
  66.          CASE IS = 7   'END
  67.             sel% = lim% - 1: top% = sel% - high% + 1
  68.             IF top% < 0 THEN top% = 0
  69.          CASE IS = 8   'ENTER
  70.             lim% = sel%
  71.       END SELECT
  72.    WEND
  73.    ScrollBox% = sel%
  74. END FUNCTION
  75.  
  76.